/**
 * 项目名称：点亮一个LED
 * 单片机：STC8G1K08
 * 频率：11.0592Mhz
 * PCB:1603120A_Y3
 * 学习目标：理解IO模式寄存器的配置，以及点亮LED时发生了什么
 * 要驱动某个元件时，单片机IO模式要配置输出，即PxM1=0,PxM0=1
 * 阅读STC数据手册，查看有关IO模式寄存器的内容
 */

#include "stc8g.h" //加载此头文件以后不需要再加载reg51.h

//软件延时函数@11.0592MHz 本小节不必理会其原理
void Delay500ms() {
    unsigned char i, j, k;

    i = 29;
    j = 14;
    k = 54;
    do {
        do {
            while (--k);
        } while (--j);
    } while (--i);
}

// 只观察LED1的状态 LED1  P3.6
//根据手册配置P36的模式为输出，要使用P3M1和P3M0这两个寄存器，同理，配置P1x就使用P1Mx，配置P2x就使用P2Mx，规律很容易找到
//P3M1和P3M0等寄存器地址已经在stc8g.h里声明，所以我们不需要也不能再使用sfr来创建
//则P3M1的第6个位（从低向高数）要为“0”，P3M0的第6个位为“1”

void main() {

    P3M1 = 0x00; //0x00 二进制值为 0000 0000
    P3M0 = 0x40; //0x40 二进制值为 0100 0000

    while(1) {
        //根据我们的试验板硬件电路，需要IO输出高电平时LED才会点亮，代码里让IO值等于1时，单片机对应的IO就会输出高电平，反之为则低电平
        P36 = 1;
        Delay500ms();
        P36 = 0;
        Delay500ms();
    }
}
